{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Subreddit Suggester\n",
    "This notebook is a companion to a Swift Playground that uses CreateML to train a model that predicts which subreddit a post should be submitted to based on a user's title. Not everything is easy to do in Swift yet so this script:\n",
    "\n",
    "1. Scrapes Reddit for post titles and subreddits via their REST API\n",
    "2. Preprocesses data to prepare it for training a model\n",
    "3. Tests the resulting models on anecdotal and real-world data\n",
    "4. Computes more advanced statistics for our model like a confusion matrix."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "import pandas\n",
    "import json\n",
    "import os\n",
    "import sys\n",
    "import re\n",
    "import coremltools\n",
    "import matplotlib.pyplot as pyplot\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Constants"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [],
   "source": [
    "PROJECT_DIR = 'PATH/TO/PROJECT/'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Scraping data from Reddit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_listing(subreddit, sort='top', after=None, limit=25):\n",
    "    # Set the user agent on the request so we don't get rate limited\n",
    "    headers = {'User-agent': 'Subreddit Title Bot'}\n",
    "    url_fmt = 'https://www.reddit.com/r/{subreddit}/{sort}.json'\n",
    "    url = url_fmt.format(subreddit=subreddit, sort=sort)\n",
    "    params = {'after': after, 'limit': limit, 't': 'year'}\n",
    "    response = requests.get(url, params=params, headers=headers)\n",
    "    print(response.url)\n",
    "    return response.json()\n",
    "\n",
    "def parse_listing(data):\n",
    "    items = []\n",
    "    for child in data['data']['children']:\n",
    "        post = child['data']\n",
    "        item = (post['subreddit'], post['title'])\n",
    "        items.append(item)\n",
    "    after = data['data']['after']\n",
    "    return items, after\n",
    "\n",
    "def get_n_posts(num_posts, subreddit, sort='top', limit=100):\n",
    "    posts = []\n",
    "    after = None\n",
    "    while len(posts) < num_posts:\n",
    "        data = get_listing(subreddit, sort=sort, after=after, limit=limit)\n",
    "        items, after = parse_listing(data)\n",
    "        # Only keep as many posts as we need\n",
    "        keep = min(num_posts - len(posts), len(items))\n",
    "        posts.extend(items[:keep])\n",
    "        if not after:\n",
    "            break\n",
    "    return posts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://www.reddit.com/r/machinelearning/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_7bxdyv&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_8gj9ns&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_8f2g6k&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_7nb5nq&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_965zgf&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_86ab1g&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_9jhhvb&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_9iz4ck&limit=100&t=year\n",
      "https://www.reddit.com/r/machinelearning/top.json?after=t3_7qzs7x&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_9kuo2h&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_8bg6es&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_7p6xfu&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_7bpyn0&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_7prsjw&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_9peq7s&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_8dcgh3&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_9pp86p&limit=100&t=year\n",
      "https://www.reddit.com/r/androiddev/top.json?after=t3_83yom8&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_8ieqzj&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7hdet3&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7k19z9&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_8jtgo9&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7j4bwg&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7vfjqp&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7sf8si&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_7ls7sw&limit=100&t=year\n",
      "https://www.reddit.com/r/iosprogramming/top.json?after=t3_91v7au&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_9fub95&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_9ci0g0&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_8k56t5&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_8js98n&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_889jfo&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_8qtfxl&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_7hhm1t&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_7mlqw8&limit=100&t=year\n",
      "https://www.reddit.com/r/learnmachinelearning/top.json?after=t3_90zf7x&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_938xs8&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_9imops&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_8hk4oq&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_7j6ooq&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_7k9xt3&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_9f77k7&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_7k1cda&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_9i7xqt&limit=100&t=year\n",
      "https://www.reddit.com/r/datascience/top.json?after=t3_7w3mzd&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_87agu2&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_8mgqv4&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_8s9sdx&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_85729m&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_9tkfic&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_7nfqjx&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_9jw3wp&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_7spqo1&limit=100&t=year\n",
      "https://www.reddit.com/r/funny/top.json?after=t3_7iphbc&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_8fztrk&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_8t1qqt&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_85rryv&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_7bsspw&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_8gtr0p&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_97ihog&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_7ebiua&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_7xlzjp&limit=100&t=year\n",
      "https://www.reddit.com/r/AskReddit/top.json?after=t3_889nc5&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_96h90n&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_83lq1m&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_7t4w91&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_8mu6ki&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_9r3ilk&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_9e431v&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_804pp0&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_87s6rr&limit=100&t=year\n",
      "https://www.reddit.com/r/todayilearned/top.json?after=t3_7ydnv4&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_8ex7p6&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_8nhyxb&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_8jtezu&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_926dfb&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_7fqc5l&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_8oifuu&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_8yjgj1&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_7q5579&limit=100&t=year\n",
      "https://www.reddit.com/r/science/top.json?after=t3_99sbvy&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_8m07ar&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_9of0f7&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_8wefdt&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_7xzi6k&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_7idkh2&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_97rdy4&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_8ofvcn&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_8doejc&limit=100&t=year\n",
      "https://www.reddit.com/r/worldnews/top.json?after=t3_8glh4q&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_80wj6f&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_9aazsx&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_991rei&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_8hv02p&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_7y7nb6&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_9lkesi&limit=100&t=year\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://www.reddit.com/r/pics/top.json?after=t3_7g4mro&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_8kiyb3&limit=100&t=year\n",
      "https://www.reddit.com/r/pics/top.json?after=t3_8cwmpy&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_866ch5&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_9pbcqp&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_8tqiqp&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_8c1x8q&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_8ajep6&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_9hqsou&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_862wep&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_9cvqbi&limit=100&t=year\n",
      "https://www.reddit.com/r/IAmA/top.json?after=t3_96bjoo&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_9fspr4&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_9l1hi9&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_8k4bkr&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_9kt8bk&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_9l97pd&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_7goukg&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_89bs1y&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_7essqe&limit=100&t=year\n",
      "https://www.reddit.com/r/gaming/top.json?after=t3_8gk5ag&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_80qvde&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_8yp7qa&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_8xaty0&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_7bwdlu&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_7huu5k&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_8tk1uz&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_7hhltx&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_8ngir0&limit=100&t=year\n",
      "https://www.reddit.com/r/videos/top.json?after=t3_7dsadk&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_8qc9g7&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_91rpg9&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_8uftae&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_8k1fyd&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_8exo3x&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_9jli2e&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_7svmzs&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_7k7ey9&limit=100&t=year\n",
      "https://www.reddit.com/r/movies/top.json?after=t3_7vk0dv&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_7zbjis&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_8505bv&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_7emg5r&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_925jio&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_9ofdin&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_8mcj7a&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_9pfc0t&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_9unit9&limit=100&t=year\n",
      "https://www.reddit.com/r/aww/top.json?after=t3_8ccaht&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_93zan7&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_9mvzhc&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_7l9ng1&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_8mo31t&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_7rqu4t&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_879nvw&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_7wpgiq&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_80swz2&limit=100&t=year\n",
      "https://www.reddit.com/r/Music/top.json?after=t3_9o5n0r&limit=100&t=year\n",
      "https://www.reddit.com/r/blog/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_9h7ar9&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_8u0sxj&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_7cvrwc&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_8gdftv&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_96wuqv&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_8j9dl3&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_81tqrd&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_9az0co&limit=100&t=year\n",
      "https://www.reddit.com/r/gifs/top.json?after=t3_7jnr56&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_7sbv0y&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_8q00pe&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_965lzf&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_9tukl6&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_7tt02n&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_8dwt8h&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_9oea7m&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_7j99as&limit=100&t=year\n",
      "https://www.reddit.com/r/explainlikeimfive/top.json?after=t3_80ezzn&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_91iglq&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_7osvex&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_8h2y0z&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_7eha0h&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_9uzo2o&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_7yq9io&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_9e3ifx&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_872mgo&limit=100&t=year\n",
      "https://www.reddit.com/r/askscience/top.json?after=t3_9rv3u2&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_80ir92&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_8ml2z5&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_9tlnc6&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_9or6au&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_9h4mzs&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_9byfqd&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_8jhh2x&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_8h7azc&limit=100&t=year\n",
      "https://www.reddit.com/r/EarthPorn/top.json?after=t3_8o0f03&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_7r4zib&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_7c1575&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_7l1ozr&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_8xuom3&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_8nrmdt&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_8ppm2c&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_7er5yn&limit=100&t=year\n",
      "https://www.reddit.com/r/books/top.json?after=t3_87w0l4&limit=100&t=year\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://www.reddit.com/r/books/top.json?after=t3_8u0fw0&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_8zlxus&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_960eep&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_96olc9&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_9g0mz4&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_9abslh&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_96b9d9&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_93eqwa&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_9sq0v0&limit=100&t=year\n",
      "https://www.reddit.com/r/television/top.json?after=t3_8rg0i0&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_8vb71z&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_814xxp&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_89sxqf&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_961xg5&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_7uectr&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_8a1b1n&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_8rn80f&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_8mk4xg&limit=100&t=year\n",
      "https://www.reddit.com/r/mildlyinteresting/top.json?after=t3_8neufu&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_88r4px&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_9bzuek&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_8csbmq&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_8d6zjj&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_8iibcy&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_9be4o1&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_7nnswb&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_7dxfg4&limit=100&t=year\n",
      "https://www.reddit.com/r/LifeProTips/top.json?after=t3_8bz8ao&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_83gf0i&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_8uh3gd&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_9p6lmh&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_8fpell&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_8v53it&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_7bpcpm&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_7sm9p7&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_83uk37&limit=100&t=year\n",
      "https://www.reddit.com/r/Showerthoughts/top.json?after=t3_7lnhu7&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_83qie5&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_9nkil3&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_9n0wxn&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_87g1aq&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_7s0jck&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_8x5c4r&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_8mcmh8&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_8i0f7p&limit=100&t=year\n",
      "https://www.reddit.com/r/space/top.json?after=t3_83ohox&limit=100&t=year\n"
     ]
    }
   ],
   "source": [
    "subreddits = [\n",
    "    'machinelearning',\n",
    "    'androiddev',\n",
    "    'iosprogramming',\n",
    "    'learnmachinelearning',\n",
    "    'datascience',\n",
    "    'funny',\n",
    "    'AskReddit',\n",
    "    'todayilearned',\n",
    "    'science',\n",
    "    'worldnews',\n",
    "    'pics',\n",
    "    'IAmA',\n",
    "    'gaming',\n",
    "    'videos',\n",
    "    'movies',\n",
    "    'aww',\n",
    "    'Music',\n",
    "    'blog',\n",
    "    'gifs',\n",
    "    'explainlikeimfive',\n",
    "    'askscience',\n",
    "    'EarthPorn',\n",
    "    'books',\n",
    "    'television',\n",
    "    'mildlyinteresting',\n",
    "    'LifeProTips',\n",
    "    'Showerthoughts',\n",
    "    'space'\n",
    "]\n",
    "\n",
    "max_posts = 1000\n",
    "posts = []\n",
    "for subreddit in subreddits:\n",
    "    posts.extend(get_n_posts(max_posts, subreddit))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>subreddit</th>\n",
       "      <th>title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>[P] Realtime multihand pose estimation demo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>[P] Keras Implementation of Image Outpaint</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>[P] Generative Ramen</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>[P] Landing the Falcon booster with Reinforcem...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>[D] If you had to show one paper to someone to...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         subreddit                                              title\n",
       "0  MachineLearning        [P] Realtime multihand pose estimation demo\n",
       "1  MachineLearning         [P] Keras Implementation of Image Outpaint\n",
       "2  MachineLearning                               [P] Generative Ramen\n",
       "3  MachineLearning  [P] Landing the Falcon booster with Reinforcem...\n",
       "4  MachineLearning  [D] If you had to show one paper to someone to..."
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pandas.DataFrame(posts, columns=['subreddit', 'title'])\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>subreddit</th>\n",
       "      <th>title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Realtime multihand pose estimation demo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Keras Implementation of Image Outpaint</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Generative Ramen</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Landing the Falcon booster with Reinforcement...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>If you had to show one paper to someone to sh...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         subreddit                                              title\n",
       "0  MachineLearning            Realtime multihand pose estimation demo\n",
       "1  MachineLearning             Keras Implementation of Image Outpaint\n",
       "2  MachineLearning                                   Generative Ramen\n",
       "3  MachineLearning   Landing the Falcon booster with Reinforcement...\n",
       "4  MachineLearning   If you had to show one paper to someone to sh..."
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Clean the titles\n",
    "df.title = df.title.apply(lambda x: re.sub(r'\\[.*\\]', '', x))\n",
    "df.title = df.title.apply(lambda x: re.sub(r'\\W(?<![ ])', '', x))\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Format everything for CreateML\n",
    "output = []\n",
    "for idx, row in df.iterrows():\n",
    "    output.append({'text': row.title, 'label': row.subreddit})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [],
   "source": [
    "filename = os.path.join(PROJECT_DIR, 'data.json')\n",
    "with open(filename, 'w') as fid:\n",
    "    fid.write(json.dumps(output))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test Model\n",
    "Head over to the Swift Playground code to train your model before continuing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "mlmodel = coremltools.models.MLModel(\n",
    "    os.path.join(PROJECT_DIR, 'SubredditSuggester.mlmodel')\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "input {\n",
       "  name: \"text\"\n",
       "  shortDescription: \"Input text\"\n",
       "  type {\n",
       "    stringType {\n",
       "    }\n",
       "  }\n",
       "}\n",
       "output {\n",
       "  name: \"label\"\n",
       "  shortDescription: \"Text label\"\n",
       "  type {\n",
       "    stringType {\n",
       "    }\n",
       "  }\n",
       "}\n",
       "metadata {\n",
       "  shortDescription: \"Predict which subreddit a post should go in based on a title.\"\n",
       "  versionString: \"1.0\"\n",
       "  author: \"Jameson Toole\"\n",
       "}"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlmodel._spec.description"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saw this good boy at the park today.  |  aww\n",
      "Latest NIPS submission from OpenAI  |  MachineLearning\n",
      "TIL you can use Core ML to suggest subreddits to users  |  todayilearned\n",
      "I made a tutorial using CreateML AMA  |  IAmA\n",
      "Westworld and Game of Thrones coming to netflix  |  television\n",
      "We park in driveways, but drive on parkways  |  Showerthoughts\n",
      "From the top of Mt. Fuji, Japan  |  EarthPorn\n",
      "What's the first thing you do every morning?  |  AskReddit\n",
      "Taylor Swift announces additional Reputation tour dates  |  iOSProgramming\n"
     ]
    }
   ],
   "source": [
    "# Test the model on some titles I wrote with specific subreddits in mind.\n",
    "sample_titles = [\n",
    "    'Saw this good boy at the park today.',\n",
    "    'Latest NIPS submission from OpenAI',\n",
    "    'TIL you can use Core ML to suggest subreddits to users',\n",
    "    'I made a tutorial using CreateML AMA',\n",
    "    'Westworld and Game of Thrones coming to netflix',\n",
    "    'We park in driveways, but drive on parkways',\n",
    "    'From the top of Mt. Fuji, Japan',\n",
    "    \"What's the first thing you do every morning?\",\n",
    "    'Taylor Swift announces additional Reputation tour dates'\n",
    "]\n",
    "\n",
    "for title in sample_titles:\n",
    "    result = mlmodel.predict({'text': title})\n",
    "    print(title, ' | ', result['label'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://www.reddit.com/r/machinelearning/new.json?limit=100\n",
      "https://www.reddit.com/r/androiddev/new.json?limit=100\n",
      "https://www.reddit.com/r/iosprogramming/new.json?limit=100\n",
      "https://www.reddit.com/r/learnmachinelearning/new.json?limit=100\n",
      "https://www.reddit.com/r/datascience/new.json?limit=100\n",
      "https://www.reddit.com/r/funny/new.json?limit=100\n",
      "https://www.reddit.com/r/AskReddit/new.json?limit=100\n",
      "https://www.reddit.com/r/todayilearned/new.json?limit=100\n",
      "https://www.reddit.com/r/science/new.json?limit=100\n",
      "https://www.reddit.com/r/worldnews/new.json?limit=100\n",
      "https://www.reddit.com/r/pics/new.json?limit=100\n",
      "https://www.reddit.com/r/IAmA/new.json?limit=100\n",
      "https://www.reddit.com/r/gaming/new.json?limit=100\n",
      "https://www.reddit.com/r/videos/new.json?limit=100\n",
      "https://www.reddit.com/r/movies/new.json?limit=100\n",
      "https://www.reddit.com/r/aww/new.json?limit=100\n",
      "https://www.reddit.com/r/Music/new.json?limit=100\n",
      "https://www.reddit.com/r/blog/new.json?limit=100\n",
      "https://www.reddit.com/r/gifs/new.json?limit=100\n",
      "https://www.reddit.com/r/explainlikeimfive/new.json?limit=100\n",
      "https://www.reddit.com/r/askscience/new.json?limit=100\n",
      "https://www.reddit.com/r/EarthPorn/new.json?limit=100\n",
      "https://www.reddit.com/r/books/new.json?limit=100\n",
      "https://www.reddit.com/r/television/new.json?limit=100\n",
      "https://www.reddit.com/r/mildlyinteresting/new.json?limit=100\n",
      "https://www.reddit.com/r/LifeProTips/new.json?limit=100\n",
      "https://www.reddit.com/r/Showerthoughts/new.json?limit=100\n",
      "https://www.reddit.com/r/space/new.json?limit=100\n"
     ]
    }
   ],
   "source": [
    "# Download 100 new posts from each subreddit.\n",
    "max_posts = 100\n",
    "posts = []\n",
    "for subreddit in subreddits:\n",
    "    posts.extend(get_n_posts(max_posts, subreddit))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>subreddit</th>\n",
       "      <th>title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Applying Deep Learning To Airbnb Search</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>What is the best way to isolate a feature of ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Model a wifi system</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>BERT Explained State of the art language mode...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>MachineLearning</td>\n",
       "      <td>Massive automated archivehistorical footage s...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         subreddit                                              title\n",
       "0  MachineLearning            Applying Deep Learning To Airbnb Search\n",
       "1  MachineLearning   What is the best way to isolate a feature of ...\n",
       "2  MachineLearning                                Model a wifi system\n",
       "3  MachineLearning   BERT Explained State of the art language mode...\n",
       "4  MachineLearning   Massive automated archivehistorical footage s..."
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Apply the same pre-processing\n",
    "new_df = pandas.DataFrame(posts, columns=['subreddit', 'title'])\n",
    "new_df.title = new_df.title.apply(lambda x: re.sub(r'\\[.*\\]', '', x))\n",
    "new_df.title = new_df.title.apply(lambda x: re.sub(r'\\W(?<![ ])', '', x))\n",
    "new_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Predict the subreddit for each post.\n",
    "new_df['predicted'] = new_df.title.apply(lambda x: mlmodel.predict({'text': x})['label'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Mark a prediction correct if it matches the actual subreddit\n",
    "new_df['correct'] = new_df.predicted == new_df.subreddit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5553571428571429"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Compute the accuracy\n",
    "new_df.correct.sum() / new_df.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a Confusion Matrix\n",
    "confusion_df = new_df[['subreddit', 'predicted', 'correct']].pivot_table(index='subreddit', columns='predicted', values='correct', aggfunc='count', fill_value=0)\n",
    "confusion = confusion_df.values / 100.0\n",
    "\n",
    "pyplot.imshow(confusion)\n",
    "pyplot.xticks(range(confusion.shape[0]), confusion_df.columns.values, rotation=90)\n",
    "pyplot.yticks(range(confusion.shape[1]), confusion_df.index.values)\n",
    "pyplot.xlabel('Predicted')\n",
    "pyplot.ylabel('Actual')\n",
    "pyplot.title('Subreddit Suggester Confusion Matrix')\n",
    "pyplot.colorbar()\n",
    "\n",
    "pyplot.gcf().set_size_inches(10, 10)\n",
    "fig = pyplot.gcf()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
